﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Web;
using System.Web.Mvc;
using Telecom.Data;
using Telecom.Service;
using Telecom.Service.EntityCustom;
using TelecomGis.Helper.Control;

namespace TelecomGis.Controllers
{
    public class Vnpt_SiteController : ContronllerBase
    {
        private readonly loaiSiteSer _loaiSiteSer = new loaiSiteSer();
        private readonly donviToSer _donviToSer = new donviToSer();
        private readonly vnptSiteSer _vnptSiteSer = new vnptSiteSer();
        private readonly mangVTSer _mangVTSer = new mangVTSer();
        private readonly quanhuyenPhuongXaSer _quanhuyenPhuongXaSer = new quanhuyenPhuongXaSer();

        //
        // GET: /Vnpt_Site/

        public ActionResult _vnptSite()
        {
            return PartialView();
        }

        public string ListQuanHuyen()
        {
            var _listEntity = _quanhuyenPhuongXaSer.getList_QH(UtContextgis._UserPageContext.QuanHuyenByUser);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string ListQuanHuyenbyTo(string toql)
        {
            var _listEntity = _quanhuyenPhuongXaSer.getList_QH_by_To_ql(toql, UtContextgis._UserPageContext.PhuongxaByUser);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string ListPhuongXa(string quanhuyenId, string toql)
        {
            var _listEntity = _quanhuyenPhuongXaSer.getList_PX(quanhuyenId, toql, UtContextgis._UserPageContext.PhuongxaByUser);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public ActionResult Get_VNPT_SITE_ById(int Id)
        {
            var _listEntity = _vnptSiteSer.GetById(Id);
            var jsonResult = Json(_listEntity, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;
        }

        public ActionResult getString_VNPTSITEById(string Id)
        {
            var _listEntity = _vnptSiteSer.GetById( int.Parse(Id));

            VnptSiteLoadMaps _model = new VnptSiteLoadMaps();
            _model._entity = _listEntity;
            _model.images = _loaiSiteSer.getSiteByma(_listEntity.LOAISITE).MARKER;

            var jsonResult = Json(_model, JsonRequestBehavior.AllowGet);
            jsonResult.MaxJsonLength = int.MaxValue;
            return jsonResult;

            //return JsonConvert.SerializeObject(_model, Formatting.Indented,
            //                  new JsonSerializerSettings
            //                  {
            //                      ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            //                  });
        }

        public string listVNPTSITEONDONTOQL(string toql, string donvi)
        {

            string[] toqlCode;
            string[] _donviql;

            if (string.IsNullOrEmpty(toql)) toqlCode = UtContextgis._UserPageContext.ToKtByuser;
            else { List<string> _listtoql = new List<string>(); _listtoql.Add(toql); toqlCode = _listtoql.ToArray(); }

            if (string.IsNullOrEmpty(donvi)) _donviql = UtContextgis._UserPageContext.DonViByUser;
            else { List<string> _listdonvlql = new List<string>(); _listdonvlql.Add(donvi); _donviql = _listdonvlql.ToArray(); }

            var _listEntity = _vnptSiteSer.getListOnDVTOQL(toqlCode, _donviql);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string listVNPTSITEONDONTOQL_LoaiSite(string toql, string donvi, string LoaiSite)
        {

            string[] toqlCode;
            string[] _donviql;

            if (string.IsNullOrEmpty(toql)) toqlCode = UtContextgis._UserPageContext.ToKtByuser;
            else { List<string> _listtoql = new List<string>(); _listtoql.Add(toql); toqlCode = _listtoql.ToArray(); }

            if (string.IsNullOrEmpty(donvi)) _donviql = UtContextgis._UserPageContext.DonViByUser;
            else { List<string> _listdonvlql = new List<string>(); _listdonvlql.Add(donvi); _donviql = _listdonvlql.ToArray(); }

            string[] loaiSiteArray = LoaiSite.Split(',');

            var _listEntity = _vnptSiteSer.getListOnDVTOQL_LoaiSite(toqlCode, _donviql, loaiSiteArray);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string listVNPTSITEONDONTOQL_MAVT(string mavt, string toql, string donvi)
        {
            string[] toqlCode;
            string[] _donviql;

            if (string.IsNullOrEmpty(toql)) toqlCode = UtContextgis._UserPageContext.ToKtByuser;
            else { List<string> _listtoql = new List<string>(); _listtoql.Add(toql); toqlCode = _listtoql.ToArray(); }

            if (string.IsNullOrEmpty(donvi)) _donviql = UtContextgis._UserPageContext.DonViByUser;
            else { List<string> _listdonvlql = new List<string>(); _listdonvlql.Add(donvi); _donviql = _listdonvlql.ToArray(); }

            var _listEntity = _vnptSiteSer.getListOnDVTOQLTRAMVT(toqlCode, _donviql, mavt);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string listJsonIntoCateTree()
        {
            var _listEntity = _loaiSiteSer.getList();

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public string listJsonDonviQly()
        {
            var _listEntity = _donviToSer.getListTree(UtContextgis._UserPageContext.DonViByUser, UtContextgis._UserPageContext.ToKtByuser);

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public ActionResult ListTramVienThongOVnptSite(int maVnptSite)
        {
            var _listEntity = _mangVTSer._getList_On_Vnpt_Site(maVnptSite);
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult loadDataL_vnptSite_InJson(string loaiSite, string dvql, string type, int jtStartIndex = 0, int jtPageSize = 0, string jtSorting = null)
        {
            if (string.IsNullOrEmpty(dvql))
            {
                var _listEntityDV = _vnptSiteSer.getList(loaiSite, UtContextgis._UserPageContext.ToKtByuser , UtContextgis._UserPageContext.users.USERID, "toql", jtStartIndex, jtPageSize);
                return Json(new { Result = "OK", Records = _listEntityDV.list, TotalRecordCount = _listEntityDV.count }, JsonRequestBehavior.AllowGet);
            }
            else
            {
                List<string> _list = new List<string>(); _list.Add(dvql);
                var _listEntity = _vnptSiteSer.getList(loaiSite, _list.ToArray(), UtContextgis._UserPageContext.users.USERID, type, jtStartIndex, jtPageSize);
                return Json(new { Result = "OK", Records = _listEntity.list, TotalRecordCount = _listEntity.count }, JsonRequestBehavior.AllowGet);
            }
        }

        // json Data
        public string ListMangVT()
        {
            var _listEntity = _mangVTSer._getList();
            //var jsonResult = Json(_listEntity, JsonRequestBehavior.AllowGet);
            //jsonResult.MaxJsonLength = int.MaxValue;
            //return jsonResult;
            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }

        public ActionResult AddMVTOnVNPTSITE(int siteId, string name)
        {
            SITE_MANGVT model = new SITE_MANGVT();
            model.ID = 0;
            model.SITEID = siteId;

            ViewBag.NameVNpTSITEADDMVT = name;

            return PartialView("_AddMVTOnVNPTSITE", model);

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddMVTOnVNPTSITE(SITE_MANGVT Model)
        {
            if (string.IsNullOrEmpty(Model.MANGVT))
            {
                return JsonError("Vui lòng chọn  mạng viễn thông");
            }

            _mangVTSer.addorUpdate_MVTONSITE(Model);


            return JsonSuccess("");

        }

        [HttpPost]
        public JsonResult DeleteMVTONSITE(int SITEID, int ID)
        {

            try
            {
                Thread.Sleep(50);
                _mangVTSer.DeteleMVTONSITE(ID);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }

        }

        public ActionResult UPMVTOnVNPTSITE(string mavt, int Idss)
        {
            SITE_MANGVT model = new SITE_MANGVT();
            model = _mangVTSer.Get_VNPTSITE_MVT(Idss, mavt);

            ViewBag.NameVNpTSITEADDMVT = _vnptSiteSer.GetById(Idss).TEN;

            return PartialView("_AddMVTOnVNPTSITE", model);
        }

        public ActionResult AddVNPTSITE(string loaiSite, string donvi, string toql)
        {
            VNPT_SITE model = new VNPT_SITE();
            model.SITEID = 0;
            model.DONVIQL = donvi;
            model.TOQL = toql;
            model.LOAISITE = loaiSite;
            model.ISNEW = 1;

            return PartialView("_AddVNPTSITE", model);
        }



        public ActionResult UpdateVNPTSITE(int SiteId)
        {
            VNPT_SITE model = new VNPT_SITE();
            model = _vnptSiteSer.GetById(SiteId);
            return PartialView("_UpdateVNPTSITE", model);
        }

        public ActionResult UpdateVNPTSITE_LAPDAT(int SiteId)
        {
            VNPT_SITE model = new VNPT_SITE();
            model = _vnptSiteSer.GetById(SiteId);
            return PartialView("_UpdateVNPTSITE_LAPDAT", model);
        }

        public ActionResult UpdateVNPTSITE_On_Maps(int SiteId, string x, string y)
        {
            VNPT_SITE model = new VNPT_SITE();
            model = _vnptSiteSer.GetById(SiteId);
            model.X = x;
            model.Y = y;
            return PartialView("_UpdateVNPTSITE_On_Maps", model);
        }

        public ActionResult AddVNPTSITE_On_Maps(string x, string y)
        {
            VNPT_SITE model = new VNPT_SITE();
            model.ISNEW = 1;
            model.X = x;
            model.Y = y;

            return PartialView("_AddVNPTSITE_On_Maps", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddVNPTSITE(VNPT_SITE model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã VNPT SITE");
            }

            var entityCheck = _vnptSiteSer.checkVnPTSites(model.MA.ToUpper());
            if (entityCheck == true)
            {
                return JsonError("mã VNPT Site đã tồn tại, vui lòng đánh mã khác");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.QUANHUYEN))
            {
                return JsonError("Vui lòng chọn quận huyện cho VNPT SITE");
            }

            //if (string.IsNullOrEmpty(model.PHUONGXA))
            //{
            //    return JsonError("Vui lòng chọn phường xã cho VNPT SITE");
            //}

            if (string.IsNullOrEmpty(model.X))
            {
                return JsonError("Vui lòng nhập địa chỉ X cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.Y))
            {
                return JsonError("Vui lòng nhập địa chỉ Y cho VNPT SITE");
            }


            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.LOAISITE))
            {
                return JsonError("Vui lòng chọn loại site cho VNPT SITE");
            }

            model.MA = model.MA.ToUpper();
            _vnptSiteSer.addorUpdate(model);

            var etitySite = _vnptSiteSer.GetByIdMa(model.MA);

            var ListSiteMangVt = _loaiSiteSer.getListLSMVT(model.LOAISITE);
            foreach (var item in ListSiteMangVt)
            {
                SITE_MANGVT _ml = new SITE_MANGVT();
                _ml.ID = etitySite.SITEID;
                _ml.SITEID = etitySite.SITEID;
                _ml.MANGVT = item.MANGVT;

                _mangVTSer.adByForeach_MVTONSITE(_ml);
            }

            return JsonSuccess("");

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddVNPTSITE_MAPS(VNPT_SITE model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã VNPT SITE");
            }

            var entityCheck = _vnptSiteSer.checkVnPTSites(model.MA.ToUpper());
            if (entityCheck == true)
            {
                return JsonError("mã VNPT Site đã tồn tại, vui lòng đánh mã khác");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.QUANHUYEN))
            {
                return JsonError("Vui lòng chọn quận huyện cho VNPT SITE");
            }

            //if (string.IsNullOrEmpty(model.PHUONGXA))
            //{
            //    return JsonError("Vui lòng chọn phường xã cho VNPT SITE");
            //}

            if (string.IsNullOrEmpty(model.X))
            {
                return JsonError("Vui lòng nhập địa chỉ X cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.Y))
            {
                return JsonError("Vui lòng nhập địa chỉ Y cho VNPT SITE");
            }


            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.LOAISITE))
            {
                return JsonError("Vui lòng chọn loại site cho VNPT SITE");
            }

            model.MA = model.MA.ToUpper();
            var siteIdS = _vnptSiteSer.addorUpdate(model);

            var etitySite = _vnptSiteSer.GetByIdMa(model.MA);

            var ListSiteMangVt = _loaiSiteSer.getListLSMVT(model.LOAISITE);
            foreach (var item in ListSiteMangVt)
            {
                SITE_MANGVT _ml = new SITE_MANGVT();
                _ml.ID = etitySite.SITEID;
                _ml.SITEID = etitySite.SITEID;
                _ml.MANGVT = item.MANGVT;

                _mangVTSer.adByForeach_MVTONSITE(_ml);
            }

            return JsonSuccess(etitySite.SITEID.ToString());

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UPVNPTSITE(VNPT_SITE model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã VNPT SITE");
            }

            var stringMaOld = Request["ma_vnpt_site_update_page"];

            if (stringMaOld != model.MA.ToUpper())
            {
                var entityCheck = _vnptSiteSer.checkVnPTSites(model.MA.ToUpper());
                if (entityCheck == true)
                {
                    return JsonError("mã VNPT Site bạn thay đổi đã tồn tại, vui lòng đánh mã khác");
                }
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.QUANHUYEN))
            {
                return JsonError("Vui lòng chọn quận huyện cho VNPT SITE");
            }

            //if (string.IsNullOrEmpty(model.PHUONGXA))
            //{
            //    return JsonError("Vui lòng chọn phường xã cho VNPT SITE");
            //}

            if (string.IsNullOrEmpty(model.X))
            {
                return JsonError("Vui lòng nhập địa chỉ X cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.Y))
            {
                return JsonError("Vui lòng nhập địa chỉ Y cho VNPT SITE");
            }


            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.LOAISITE))
            {
                return JsonError("Vui lòng chọn loại site cho VNPT SITE");
            }

            model.MA = model.MA.ToUpper();

            _vnptSiteSer.addorUpdate(model);

            return JsonSuccess("");

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UPVNPTSITE_MAPS(VNPT_SITE model)
        {
            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã VNPT SITE");
            }

            var stringMaOld = Request["ma_vnpt_site_update_page_MAPS"];

            if (stringMaOld.ToUpper() != model.MA.ToUpper())
            {
                var entityCheck = _vnptSiteSer.checkVnPTSites(model.MA.ToUpper());
                if (entityCheck == true)
                {
                    return JsonError("mã VNPT Site bạn thay đổi đã tồn tại, vui lòng đánh mã khác");
                }
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.QUANHUYEN))
            {
                return JsonError("Vui lòng chọn quận huyện cho VNPT SITE");
            }

            //if (string.IsNullOrEmpty(model.PHUONGXA))
            //{
            //    return JsonError("Vui lòng chọn phường xã cho VNPT SITE");
            //}

            if (string.IsNullOrEmpty(model.X))
            {
                return JsonError("Vui lòng nhập địa chỉ X cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.Y))
            {
                return JsonError("Vui lòng nhập địa chỉ Y cho VNPT SITE");
            }


            if (string.IsNullOrEmpty(model.DONVIQL))
            {
                return JsonError("Vui lòng chọn đơn vị quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.TOQL))
            {
                return JsonError("Vui lòng chọn tổ quản lý cho VNPT SITE");
            }

            if (string.IsNullOrEmpty(model.LOAISITE))
            {
                return JsonError("Vui lòng chọn loại site cho VNPT SITE");
            }

            model.MA = model.MA.ToUpper();

            _vnptSiteSer.addorUpdate(model);

            return JsonSuccess("");
        }

        [HttpPost]
        public JsonResult _DeleteVNPTSITE(int SITEID)
        {
            try
            {
                Thread.Sleep(50);
                _vnptSiteSer.deleteSite(SITEID);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }

        //[HttpPost]
        public ActionResult _DeleteVNPTSITE_MAPS(int SITEID)
        {
            try
            {
                //Thread.Sleep(50);
                _vnptSiteSer.deleteSite(SITEID);
                return Json(new { Result = "OK" }, JsonRequestBehavior.AllowGet);
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message }, JsonRequestBehavior.AllowGet);
            }
        }

        public ActionResult AddVNPTSITE_LAPTB(string ma, string ten, string loaiSite, string donvi, string toql)
        {
            VNPT_SITE model = new VNPT_SITE();
            model.SITEID = 0;
            model.DONVIQL = donvi;
            model.TOQL = toql;
            //model.LOAISITE = loaiSite;
            model.ISNEW = 1;
            model.MA = ma;
            model.TEN = model.TEN;

            return PartialView("_AddVNPTSITE_LAPTB", model);
        }

        //Loại Site
        public ActionResult loaiSiteIndex()
        {
            return PartialView("_loaiSiteIndex");
        }


        public ActionResult _listLoaiSite()
        {
            var _listEntity = _loaiSiteSer.getList();
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count }, JsonRequestBehavior.AllowGet);
        }

        public ActionResult getListLSMVT(string ma)
        {
            var _listEntity = _loaiSiteSer.getListLSMVT(ma);
            return Json(new { Result = "OK", Records = _listEntity, TotalRecordCount = _listEntity.Count }, JsonRequestBehavior.AllowGet);
        }

        [HttpPost]
        public JsonResult _DeleteLoaiSite(string MA)
        {
            try
            {
                Thread.Sleep(50);
                _loaiSiteSer.deteleLoaiSite(MA);
                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }
        }

        //[HttpPost]
        //public JsonResult _DeleteLoaiSitemVT(decimal ID)
        //{
        //    try
        //    {
        //        Thread.Sleep(50);
        //        _loaiSiteSer.deteleLoaiSiteMVT(ID);
        //        return Json(new { Result = "OK" });
        //    }
        //    catch (Exception ex)
        //    {
        //        return Json(new { Result = "ERROR", Message = ex.Message });
        //    }
        //}

        public ActionResult AddLoaiSite()
        {
            LOAI_SITE model = new LOAI_SITE();
            model.LOPBD = 0;
            return PartialView("_AddLoaiSite", model);
        }

        public ActionResult UpdateLoaiSite(string ma)
        {
            LOAI_SITE model = _loaiSiteSer.getSiteByma(ma);
            return PartialView("_UpdateLoaiSite", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddLoaiSite(LOAI_SITE model)
        {
            if (model.LOPBD == 0)
            {
                return JsonError("Vui lòng chọn lớp bản đồ");
            }

            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã site");
            }

            if (model.MA.Length > 3)
            {
                return JsonError("Mã Loại site chỉ được phép nhập 3 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên site");
            }

            if (string.IsNullOrEmpty(model.MARKER))
            {
                return JsonError("Vui lòng chọn hình ảnh");
            }

            model.KIEU_MARKER = 1;
            model.XOA = 0;

            _loaiSiteSer.addLoaiSite(model);

            return JsonSuccess("");
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UpdateLoaiSite(LOAI_SITE model)
        {
            if (model.LOPBD == 0)
            {
                return JsonError("Vui lòng chọn lớp bản đồ");
            }

            if (string.IsNullOrEmpty(model.MA))
            {
                return JsonError("Vui lòng nhập mã site");
            }

            if (model.MA.Length > 3)
            {
                return JsonError("Mã Loại site chỉ được phép nhập 3 ký tự");
            }

            if (string.IsNullOrEmpty(model.TEN))
            {
                return JsonError("Vui lòng nhập tên site");
            }

            if (string.IsNullOrEmpty(model.MARKER))
            {
                return JsonError("Vui lòng chọn hình ảnh");
            }

            model.KIEU_MARKER = 1;
            model.XOA = 0;

            var _requestMaOld = Request["MaLoaiSiteOld"];

            model.MA = _requestMaOld;

            _loaiSiteSer.upLoaiSite(model, _requestMaOld);

            return JsonSuccess("");
        }

        public ActionResult AddMVTLOAISITE(string ma, string name)
        {
            LOAISITE_MANGVT model = new LOAISITE_MANGVT();
            model.ID = 0;
            model.LOAISITE = ma;

            ViewBag.NameVNpTSITEADDMVT = name;

            return PartialView("_AddMVTLOAISITE", model);

        }

        public ActionResult UpMVTLOAISITE(decimal ma, string name)
        {
            LOAISITE_MANGVT model = _loaiSiteSer.getSiteMVTByma(ma);

            ViewBag.NameVNpTSITEADDMVT = name;

            return PartialView("_UpMVTLOAISITE", model);
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult AddMVTOnLOAISITE(LOAISITE_MANGVT Model)
        {
            if (string.IsNullOrEmpty(Model.MANGVT))
            {
                return JsonError("Vui lòng chọn  mạng viễn thông");
            }

            _loaiSiteSer.addorUpdate_MVTLOAISITE(Model);

            var ListVPTSITE = _vnptSiteSer.getListByLoaiSite(Model.LOAISITE);
            foreach (var item in ListVPTSITE)
            {
                if (_mangVTSer.checkMangVtOnSite(item.SITEID, Model.MANGVT) == false)
                {
                    SITE_MANGVT _ml = new SITE_MANGVT();
                    _ml.ID = item.SITEID;
                    _ml.SITEID = item.SITEID;
                    _ml.MANGVT = Model.MANGVT;

                    _mangVTSer.adByForeach_MVTONSITE(_ml);
                }
            }

            return JsonSuccess("");

        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult UpdateMVTOnLOAISITE(LOAISITE_MANGVT Model)
        {
            if (string.IsNullOrEmpty(Model.MANGVT))
            {
                return JsonError("Vui lòng chọn  mạng viễn thông");
            }

            _loaiSiteSer.addorUpdate_MVTLOAISITE(Model);

            var _reQuestMvtOld = Request["mvt_old_on_loaisite"];

            // cap nhat lai mang vien thong moi
            if (_reQuestMvtOld != Model.MANGVT)
            {
                var ListVPTSITE = _vnptSiteSer.getListByLoaiSite(Model.LOAISITE);
                foreach (var item in ListVPTSITE)
                {

                    var items = _mangVTSer.Get_VNPTSITE_MVT(item.SITEID, _reQuestMvtOld);
                    items.MANGVT = Model.MANGVT;
                    _mangVTSer.addorUpdate_MVTONSITE(items);
                    
                }
            }

            

            return JsonSuccess("");
        }

        [HttpPost]
        public JsonResult _DeleteLoaiSitemVT(decimal ID)
        {

            try
            {
                Thread.Sleep(50);

                var entity = _loaiSiteSer.getSiteMVTByma(ID);
                var ListVPTSITE = _vnptSiteSer.getListByLoaiSite(entity.LOAISITE);
                foreach (var item in ListVPTSITE)
                {
                    if (_mangVTSer.checkMangVtOnSite(item.SITEID, entity.MANGVT) == true)
                    {
                        var itemSIte = _mangVTSer.Get_VNPTSITE_MVT(item.SITEID, entity.MANGVT);
                        _mangVTSer.DeteleMVTONSITE(itemSIte.ID);
                    }
                }

                _loaiSiteSer.deteleLoaiSiteMVT(ID);

                return Json(new { Result = "OK" });
            }
            catch (Exception ex)
            {
                return Json(new { Result = "ERROR", Message = ex.Message });
            }

        }

        public string ListLopBanDo()
        {
            var _listEntity = _loaiSiteSer.getList_lopbando();

            return JsonConvert.SerializeObject(_listEntity, Formatting.Indented,
                              new JsonSerializerSettings
                              {
                                  ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                              });
        }
    }
}
